
package view;

import control.Comando;
import control.Controle;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import javax.swing.*;
import model.*;


public class InterfaceGerenciarArtista implements Comando {

    @Override
    public void executar() {
        
        Artista artistaAtual = (Artista) Controle.usuarioAtual;
                    
        Object[] opcoes2 = {"Editar Nome Artístico", "Editar Descrição", "Adicionar Tag", "Remover Tag", "Adicionar Imagem", "Remover Imagem", "Voltar"};
        HashMap controleOp2 = new HashMap();
        controleOp2.put("Editar Nome Artístico", 1);
        controleOp2.put("Editar Descrição", 2);
        controleOp2.put("Adicionar Tag", 3);
        controleOp2.put("Remover Tag", 4);
        controleOp2.put("Adicionar Imagem", 5);
        controleOp2.put("Remover Imagem", 6);
        controleOp2.put("Voltar", null);
                        
        String opcaoSelecionada = Controle.getInput("Escolha uma Opção: ", "SongLoad", opcoes2);
        if (controleOp2.get(opcaoSelecionada)!=null){
            switch ((Integer)controleOp2.get(opcaoSelecionada)){
                case 1: {
                    //System.out.println("Editar Nome Artístico");
                    String novoNome = Controle.getInput("Nome Atual: \""+ artistaAtual.getNomeArtistico() + "\"\n Digite o novo nome Artístico:", "Gerenciar Artista");
                    artistaAtual.setNomeArtistico(novoNome);      

                }break;                    

                case 2: {
                    //System.out.println("Editar Genero");
                    String novaDescricao = Controle.getInput("Descrição Atual: \""+ artistaAtual.getDescricaoLivre() + "\"\n Digite uma nova descrição:", "Gerenciar Artista");
                    artistaAtual.setDescricaoLivre(novaDescricao);
                }break;

                case 3: {
                    //Add Tag
                    String tag = Controle.getInput("Digite uma nova Tag:", "Gerenciar Artista");
                    artistaAtual.addTag(tag);                    

                }break; 

                case 4: {
                    //Remove Tag
                    HashMap tags = new HashMap(); 
                    int valor = 0;
                    ArrayList opcoes = new ArrayList();

                    ArrayList<String> listaTags = artistaAtual.getTags();
                    if (listaTags.isEmpty()){JOptionPane.showMessageDialog(null, "Não há nenhuma Tag registrada.");}
                    else{
                        Iterator<String> it = listaTags.iterator();   

                        while(it.hasNext())
                        {
                            String obj = it.next();

                            String chave = Integer.toString(valor) + " | " + obj;
                            opcoes.add(chave);
                            tags.put(chave, obj);

                            valor++; 
                        }

                        String retorno =  Controle.getInput("Escolha uma tag:", "Gerenciar Artista",opcoes.toArray());
                        String tagSelecionada = (String)tags.get(retorno); 

                        artistaAtual.getTags().remove(tagSelecionada);
                    }   

                }break;        

                case 5: {
                    //Add Imagem
                    String img = Controle.getInput("Digite o link de uma nova imagem:", "Gerenciar Artista");
                    artistaAtual.addImagem(img);
                }break;
                    
                case 6: {
                    //Remove img
                    HashMap tags = new HashMap(); 
                    int valor = 0;
                    ArrayList opcoes = new ArrayList();

                    ArrayList<String> listaImgs = artistaAtual.getImagens();
                    if (listaImgs.isEmpty()){JOptionPane.showMessageDialog(null, "Não há nenhuma Imgem registrada.");}
                    else{
                        Iterator<String> it = listaImgs.iterator();   

                        while(it.hasNext())
                        {
                            String obj = it.next();

                            String chave = Integer.toString(valor) + " | " + obj;
                            opcoes.add(chave);
                            tags.put(chave, obj);

                            valor++; 
                        }

                        String retorno =  Controle.getInput("Escolha um dos links de imagem:", "Gerenciar Artista",opcoes.toArray());
                        String imgSelecionada = (String)tags.get(retorno); 

                        artistaAtual.getTags().remove(imgSelecionada);
                    }   

                }break;     

                    
                    
            }                       
        }
    }
}

